Blogging is baked into Jekyll. You write blog posts as text files and Jekyllprovides everything you need to turn it into a blog.
The Posts FolderThe _posts folder is where your blog posts live. You typically write postsin Markdown, HTML isalso supported.
Creating PostsTo create a post, add a file to your _posts directory with the followingformat:
YEAR-MONTH-DAY-title.MARKUPWhere YEAR is a four-digit number, MONTH and DAY are both two-digitnumbers, and MARKUP is the file extension representing the format used in thefile. For example, the following are examples of valid post filenames:
2011-12-31-new-years-eve-is-awesome.md2012-09-12-how-to-write-a-blog.mdAll blog post files must begin with front matter which istypically used to set a layout or other meta data. For a simpleexample this can just be empty:
---layout: posttitle: "Welcome to Jekyll!"---# Welcome**Hello world**, this is my first Jekyll blog post.I hope you like it! ProTip™: Link to other postsUse the post_urltag to link to other posts without having to worry about the URLsbreaking when the site permalink style changes.
Be aware of character setsContent processors can modify certain characters to make them look nicer.For example, the smart extension in Redcarpet converts standard,ASCII quotation characters to curly, Unicode ones. In order for the browserto display those characters properly, define the charset meta value byincluding in the of your layout.
Including images and resourcesAt some point, you’ll want to include images, downloads, or otherdigital assets along with your text content. One common solution is to createa folder in the root of the project directory called something like assets,into which any images, files or other resources are placed. Then, from withinany post, they can be linked to using the site’s root as the path for the assetto include. The best way to do this depends on the way your site’s (sub)domainand path are configured, but here are some simple examples in Markdown:
Including an image asset in a post:
... which is shown in the screenshot below:![My helpful screenshot](/assets/screenshot.jpg)Linking to a PDF for readers to download:
... you can [get the PDF](/assets/mydoc.pdf) directly.Displaying an index of postsCreating an index of posts on another page should be easy thanks toLiquid and its tags. Here’s asimple example of how to create a list of links to your blog posts:
{% for post in site.posts %} {{ post.title }} {% endfor %}You have full control over how (and where) you display your posts,and how you structure your site. You should read more about how templateswork with Jekyll if you want to know more.
Note that the post variable only exists inside the for loop above. Ifyou wish to access the currently-rendering page/posts’s variables (thevariables of the post/page that has the for loop in it), use the pagevariable instead.
Categories and TagsJekyll has first class support for categories and tags in blog posts. The differencebetween categories and tags is a category can be part of the URL for a postwhereas a tag cannot.
To use these, first set your categories and tags in front matter:
---layout: posttitle: A Tripcategories: [blog, travel]tags: [hot, summer]---Jekyll makes the categories available to us at site.categories. Iterating oversite.categories on a page gives us another array with two items, the firstitem is the name of the category and the second item is an array of posts in thatcategory.
{% for category in site.categories %} {{ category[0] }} {% for post in category[1] %} {{ post.title }}{% endfor %} {% endfor %}For tags it’s exactly the same except the variable is site.tags.
Post excerptsYou can access a snippet of a posts’s content by using excerpt variable on apost. By default this is the first paragraph of content in the post, however itcan be customized by setting a excerpt_separator variable in front matter or_config.yml.
---excerpt_separator: ---Excerpt with multiple paragraphsHere's another paragraph in the excerpt.Out-of-excerptHere’s an example of outputting a list of blog posts with an excerpt:
{% for post in site.posts %} {{ post.title }} {{ post.excerpt }} {% endfor %}DraftsDrafts are posts without a date in the filename. They’re posts you’re stillworking on and don’t want to publish yet. To get up and running with drafts,create a _drafts folder in your site’s root and create your first draft:
|-- _drafts/||-- a-draft-post.mdTo preview your site with drafts, run jekyll serve or jekyll buildwith the --drafts switch. Each will be assigned the value modification timeof the draft file for its date, and thus you will see currently edited draftsas the latest posts.